Фракталы - это просто, фракталы - это красиво, фракталы - это просто красиво

ГлавнаяПримерыПрограмма и инструкцияИнструкция onLine   Об авторе

Фракталы от Дмитрия Губайдулина

Инструкция по использованию программы Fractals

Содержание

1. Общие фразы

2. Первый фрактал

3. Сетка

4. Как правильно хранить фракталы

5. Динамические фракталы

6. Раскадровка

7. Отрисовка кадров

8. Наложение логотипа

 

1. Общие фразы.


Программа «Фракталы» предназначена для исследований в области фрактальной геометрии. Не смотря на то, что по существу это является фундаментальной наукой, это к тому же просто красиво, и, в каком-то роде, является ещё и искусством. Вы сами можете рисовать весьма причудливые картины, причем не только статические, но и в динамике. И сделать это при помощи описываемой здесь программы и данной инструкции будет весьма несложно.
Итак, приступим. Данная программа не требует установки – файл Fractals.exe просто запускается с компьютера. Рабочей папкой программа считает текущую папку и пытается там найти файл Fractals.ini. Если такого файла найти не удалось – ничего страшного: об этом будет выдано сообщение, файл с необходимыми параметрами (значения будут присвоены по умолчанию) будет создан, и программа всё равно успешно запустится.
Общий вид программы (точнее, её левого верхнего угла – остальное пока неинтересно):

Программа позволяет рисовать множества Мандельброта, Жюлиа и Фату на комплексной плоскости для преобразования:
z_0 = 0\!
z_{n+1} = {z_n}^2 + c\!
Не будем останавливаться подробно на теории, ответы на все вопросы вы легко можете найти в Википедии.

 

2. Первый фрактал.


Итак, приступим к самому интересному. Выбираем пункт меню «Фракталы –> отрисовать фрактал», либо просто нажимаем букву «F» на панели инструментов. Нашему вниманию будет предложен диалог:


Если ни о чем больше не думать и сразу нажать ОК, то вашему вниманию будет предложен фрактал, именуемый множеством Мандельброта для преобразования степени 2. Что мы можем в дальнейшем менять:
- тип множества: Мандельброт, Жюлиа или Фату (учите матчасть!);
-степень преобразования: z можно возводить не только в квадрат, но и в любое другое более-менее целое число (ограничено 100);
- начальное значение z = x+iy (поля “X=” и “Y=”);
- область рисования c = p+iq (поля “<=P<=” и “<=Q<=”);
Если мы пытаемся рисовать множество Жюлиа или Фату, то мы, наоборот, будем задавать фиксированное значение c = p+iq (поля “P=” и “Q=”) и область рисования z = x+iy (поля “<=X<=” и “<=Y<=”) – соответствующие поля в диалоге поменяют свои названия;
- зачем нужны кнопки «Границы – из выбранной клетки», «Запомнить как первый кадр», «Запомнить как последний кадр» - поговорим чуть позже.
- количество итераций – это глубина расчета: до какого n считаем нашу формулу z_{n+1} = {z_n}^2 + c\!. Если ряд так и не разойдется (для Фату – не сойдётся), точка останется черной, иначе будет выкрашена в цвет, зависящий от того n, при котором ряд стал больше (для Фату – меньше) некоторой константы, т.е. разошелся (для Фату – сошелся). Чем больше n, тем дольше будет просчитываться наша картинка, но тем точнее (и в итоге – красочнее) будет результат.
- каким цветом в итоге будет выведена ваша точка, определяется областью диалога «Формирование цвета». Ноль в графе «Шаг цвета» означает, что программа сама решит, какой шаг палитры использовать. Если Вы хотите видеть плавное изменение цвета – задавайте шаг цвета в районе 0, 255 или 65535. Чем дальше Вы отклоняетесь от этих цифр, тем контрастнее будет смена цвета между соседними областями расхождения (Фату – схождения) нашего ряда. Если вы хотите, чтобы в палитре не использовался какой либо цвет (кранный, зеленый или синий) – погасите соответствующую галку (use Red, use Green, use Blue соответственно). Можно сделать рисунок исключительно в красных, зеленых или синих тонах, если оставить только одну соответствующую галку. Если Вы хотите получить черно-белый рисунок, поставьте галку «Оттенки серого» - в этом случае три галки, отвечающие за цвет, погаснут сами, поскольку станут бессмысленны.
Если нажать «ОК» - фрактал с заданными Вами параметрами будет нарисован, а вот что произойдет, если нажать «Отмена», говорить не буду.
Попробуйте для начала, не меняя никакие другие значения полей, просто поиграть формированием цвета, и вы начнете понимать, как сильно Вы можете изменить одну и ту же картину.
Всё это хорошо, но в чем фишка? Сидеть и муторно подбирать параметры, пытаясь найти область поинтереснее? Вычислять на калькуляторе, прикладывая линейку к экрану, на какой бы фрагмент рисунка взглянуть более крупным планом? Или выписывать на листочек числа с точностью до 15-го знака после запятой, чтобы потом их старательно вписать в нужные поля описанного выше диалога? А если фрактал понравился, и хочется его сохранить, или просто иметь возможность позже повторить тот же результат? Вот об этом и поговорим.

 

3. Сетка.


Выберем пункт меню «Фракталы -> Сетка», либо просто нажмем на значок толи сетки, толи решетки (справа от “F”) на панели инструментов. Появится диалог:

Вообще, говоря, предложенные здесь возможности рисования сетки на экране даже избыточны: автору ни разу все они не сгодились, но зато в теории предусмотрено решительно всё. Во-первых, мы можем задать, с какой частотой наложить сетку на экран (по умолчанию – 10х10). Во-вторых, поскольку рисунок на экране может быть совершенно любого цвета, мы можем указать RGB-цвет нашей сетки (по умолчанию белый). В-третьих, мы можем еще и проставить возле каждого узла сетки текущие значения P и Q (для Жюлиа и Фату – X и Y) не только любым цветом, но и любым размером шрифта, с любым количеством знаков после запятой и любым шрифтом (в пределах разумного). Это уж совсем для эстетов, поскольку, по большому счету, наносить шкалу чаще всего вообще не нужно.
Оговорюсь сразу: сетка на экране закреплена плохо (точнее, вообще не закреплена), поэтому, если Вы перерисуете экран (свернув/развернув окно, либо просто перекрыв окно любым другим), то сетка исчезнет. Это и хорошо: если сетку нарисовали неудачно, не надо заново рисовать фрактал, и плохо: ведь зачем-то она всё-таки была нужна. А нужна вот зачем: когда сетка на экране, потыкайте в заинтересовавший Вас фрагмент рисунка мышкой: тщательно наведите курсор мыши примерно вовнутрь интересного квадрата и нажмите левую клавишу. Соответствующий сектор сетки сменит цвет на негативный относительно её текущего цвета. Если понравился другой сектор, ткните в него: теперь он выделен цветом. Кстати, стрелки клавиатуры здесь не помогут – только мышь (на ноутбуке в крайнем случае тачпад).
Возникает закономерный вопрос: а зачем выбирать сектор? Вспомним кнопку «Границы – из выбранной клетки» в нашем первом диалоге. Теперь, если мы нажмем “F” и воспользуемся ею, то нам будет нарисована во всё наше доступное окно только эта часть фрактала. И так далее: рисуем сетку, выбираем сектор, берем границы из выбранной клетки, рисуем фрактал, рисуем сетку… Попутно можно поэкспериментировать с цветами, а также убедиться, насколько важно вовремя увеличивать количество итераций. Когда размер выбранной области будет порядка 10-15 (нанотехнологии слишком грубы для таких величин, ведь это всего лишь 10-9), то качество картинки начнет падать…
Полезный совет: для получения «красивых» множеств Жюлиа и Фату значения P и Q лучше выбирать где-то на границе области схождения/расхождения множества Мандельброта. Вот здесь-то Вам и может сгодиться нанесенная шкала на сетке: присмотрите какое-нибудь значение (например,  P = -0.748, Q = -0.148) и рисуйте.

 

4. Как правильно хранить фракталы.


Если Вы хотите сохранить рисунок на экране – выберите пункт меню «Файл -> Сохранить как BMP». Задайте имя своему творению, и в дальнейшем не мне Вас учить, что с этим можно сделать. Правда, при этом Вы уже никогда не вспомните, при каких параметрах был получен данный фрактал, и экспериментировать с ним сможете разве что в фотошопе. Поэтому есть и другая возможность: «Файл -> Сохранить», либо пиктограмма с дискетой на панели инструментов. В ответ будет выдано что-то типа:

Полученный файл вполне текстовый, может быть открыт блокнотом или всем, на что хватит вашего опыта в вопросе просмотра текстовых файлов. Для особо любопытных – выглядит он приблизительно так:

т.е. занимает намного меньше места, чем картинка. Не буду объяснять, что здесь значит каждая строка, потому что любой сообразительный индивид сразу же поймет, что это в точности все параметры нашего первого диалога «Отрисовка фрактала». Править данный файл, конечно, можно, но зачем?
Если можно сохранить фрактал в таком формате, значит, можно и загрузить: «Файл -> Открыть», либо соответствующая пиктограмка на панели инструментов. Если Вы ничего в файле не попортили, будет выдано сообщение:

Дальнейшее зависит от Вашего ответа. Если возникнет желание чего-то подправить, жмем на “F”, и всё в наших руках. Если есть желание поделиться красотой с другом, можно просто кинуть ему этот файлик. А если друг ничего не знает, что с этим можно сделать – кинуть ссылку на сайт. В общем, перспективы весьма обширны, делитесь своими достижениями (кстати, со мной тоже можно: tahirych@bk.ru), несите науку (или искусство?) в массы, и мир станет чуть-чуть лучше.

 

5. Динамические фракталы.


Это всё – неподвижные картинки, или, правильнее сказать, статические. А если заставить их двигаться? Можно продемонстрировать глубину фрактала, в множестве Жюлиа пройтись вдоль границы P и Q, динамически менять палитру, количество итераций, просто двигаться по фракталу от точки к точке. Все зависит от Вашей фантазии ну и, конечно, от возможностей данной программы.
Выберите пункт меню «Динамические фракталы -> Режим рисования кадров», либо нажмите на пиктограмму кинопленки на панели инструментов. В центре Вашего окна появится экран. Размер этого экрана задается пунктом меню «Динамические фракталы -> Размер кадра». Изначально он 720х576, но все в Ваших руках, опять-таки, в пределах разумного. А разумные пределы обозначены в диалоге:

Если Вы установили кинорежим и обозначили размер кадра, Вы можете делать всё то же самое, о чем мы говорили выше, но не во всем окне, а только в заданной области. Кстати, можно без всякого кино рисовать статические фракталы в окне поменьше, если процесс слишком медленный. А если что-то сильно понравится – уже нарисовать во весь экран. Но не мне Вас учить – сами догадаетесь. А для сохранения параметров фрактала размер окна вообще не имеет никакого значения.

 

6. Раскадровка.


Вызовем соответствующий пункт меню:

На первый взгляд пугает. Но не всё так плохо: кое-что мы уже где-то видели, а при правильном использовании результат вне всяких сомнений превзойдет Ваши ожидания.
Пойдем по порядку. Всё, что находится выше рамки «Первый кадр», нам уже хорошо знакомо, и не требует повторного описания. Кроме того, эти параметры одинаковы для всех кадров Вашего проекта. Всё, что находится внутри рамок «Первый кадр» и «Последний кадр», тоже нам знакомо. Не знаком всего один пункт: количество кадров. Это – то количество кадров, которое необходимо рассчитать, причем если кадров – 10, то на самом деле их будет 11, с нулевого по десятый.
Если вспомнить про кнопки «Запомнить как первый кадр», «Запомнить как последний кадр» в диалоге «Отрисовка фрактала», то картина станет еще яснее: если Вы нарисовали некий фрактал, который Вам понравился, и сохранили его как первый кадр, а потом ушли вглубь фрактала, либо вбок, либо поэкспериментировали с количеством итераций или шагом цвета, и сохранили это как последний кадр, то у Вас в данной необъятной форме уже все готово, нужно только решить, сколько кадров вы хотите видеть между этими двумя состояниями.
Примечание. Вместе с сохранением параметров первого/последнего кадра сохраняются и тип множества, степень преобразования, формирование цвета. Поэтому если в качестве первого кадра Вы сохранили множество Мандельброта, а в качестве последнего – множество Жюлиа, то это ваши проблемы. Вообще, в программе слабо реализована защита от дурака, но на дураков она и не рассчитана, так что будьте умными.
Итак, если Вы все сделали правильно и нажали «ОК», то Вы обязательно увидите нечто типа:


причем намного быстрее, чем думали. Что же мы получили? Опять-таки, для особо любопытных (что весьма полезно) – посмотрим в файл Dynamic000014.dat. В нем строк столько, сколько мы заказывали кадров. Каждая строка имеет строго определённый формат:

14; J; 2; 1110; 240; 1000; -0.756000000000000; -0.156000000000000; -2.000000000000000; 2.000000000000000; -1.500000000000000; 1.500000000000000;

1-й параметр – номер кадра (в нашем примере 14);
2-й параметр – латинская буква M, J или F: Мандельброт, Жюлиа или Фату (у нас J);
3-й параметр – степень преобразования (здесь 2);
4-й параметр – параметры формирования цвета. У нас 1110, т.е. R,G,B включены, оттенки серого выключены;
5-й параметр – шаг цвета (здесь 240);
6-й параметр – количество итераций;
7, 8-й параметры – для Мандельброта X и Y, для других типов – P и Q.
Оставшиеся 4 параметра – для Мандельброта Pmin, Qmin, PMax, QMax, для других – XMin, YMin, XMax, YMax.

Я не случайно столь подробно документирую здесь формат данного файла, потому что можно склеивать различные раскадровки, если это имеет смысл, и получать весьма замысловатые сюжеты. Например, сначала идти вглубь, потом – в сторону при постоянном масштабе, потом нарастить количество итераций, и т.п. Главное – чтобы последний кадр предыдущей раскадровки совпадал с первым кадром следующей. Здесь уже все зависит от Вас.

 

7. Отрисовка кадров.


Если устраивающий Вас файл раскадровки сделан, можно отрисовать все кадры. Вызываем пункт меню «Динамические фракталы -> Отрисовка кадров»:

Выбираем нужный файл и с какого по какой кадр Вы хотите нарисовать (напомню, кадры нумеруются с нуля). Рисовать проект можно достаточно долго, ни за один раз, поэтому предоставлена возможность рисовать по частям. Если вдруг Вам понадобилось остановить процесс – просто воспользуйтесь клавишей Esc, и вас спросят, правда ли Вы этого хотите.
Кстати, Esc работает не только при рисовании динамических проектов, но и при создании статических фракталов.
По окончании (прерывании) рисования Вам будет предоставлена краткая статистика:



В результате отрисовки проекта Вы получите на диске кучу BMP-файлов, соответствующим образом пронумерованных. Дальше Вы можете поступить с ними как угодно – сделать GIF-файл при помощи любого доступного вам софта, либо AVI-ролик (например, при помощи Adobe After Effects). Можно, в конце концов, просто просматривать их последовательно, хотя эффект будет уже не тот.

 

8. Наложение логотипа.


Если Ваше творение заслуживает отметки об авторстве, вы можете оптом наложить логотип на все ваши кадры. Для начала этото самый логотип нужно нарисовать, например, в фотошопе, и сохранить в формате BMP.
Для примера я приведу свой логотип:


- стилизованные буквы G и D, обозначающие мои инициалы.

Требования к логотипу:
- он должен быть на белом фоне (0xFFFFFF);
- его размер не должен превышать размер кадров, на которые он будет наноситься (настоящая проблема!).
- в самом логотипе не должно быть никаких цветов с равными составляющими RGB, например абсолютно белых (0xFFFFFF), абсолютно черных (0x000000) и прочих абсолютно серых (типа 0x222222) точек. Если они там все же есть – смените их хотя бы на что-то типа 0xFFFFFE, 0x000001, 0x222223: для глаза незаметно, а наложится без ошибок.
- логотип может иметь тень (в том же фотошопе сделать совсем несложно). Тень как раз должна быть абсолютно серой.
Если логотип готов, выбираем «Фракталы -> Наложить логотип»:

Имена файлов для нанесения могут быть заданы по шаблону, например C:\BC\Fractals\Fr_0*.bmp. Если затрудняетесь с правильным формированием шаблона имени, просто сложите их все в отдельную папку (чтобы там ничего кроме них не было) и укажите “Полный_путь_к_папке\*.*”. Задайте правильно отступ вашего логотипа слева и снизу. Для начала поэкспериментируйте на конкретном кадре и убедитесь, что Вас всё устраивает. Изначальные кадры, кстати, в любом случае не пострадают – в той же папке будут созданы файлы с теми же именами и дополнительным суффиксом “logo”. Если что-то не так – их можно просто удалить и повторить процедуру.
Если в логотипе тень присутствует, то Вы можете её не рисовать, убрав соответствующую галку в окне диалога.
В общем, всё не так просто, как хотелось бы, но красота (и авторские права) требуют жертв.

 И в заключении…

Это не окончательная версия программы, жизнь не стоит на месте, и всё в наших руках. Будут новые релизы.

 


Губайдулин Дмитрий Тахирович. Все права защищены. ©

Цитирование опубликованных на сайте материалов без ссылки на автора не допускается.